package jmind.asteroidea.annotations;

import jmind.asteroidea.core.parser.OriginalTagParser;
import jmind.asteroidea.core.parser.TagParser;

import jmind.asteroidea.core.reducer.FirstOfReducer;
import jmind.asteroidea.core.reducer.Reducer;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * description:用于AOP 拦截的方法上
 * @author weibo.xie
 * @date: 2022-07-15 10:28
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface StarfishWristPoint {
    /** 支持spel，但是接口不能获取参数名所以定义为arg0，arg1 这种形式**/
    String[] tags()  default {} ;
    /** tag 解析类**/
    Class<? extends TagParser> tagParser() default OriginalTagParser.class;
    /**结果处理类**/
    Class<? extends Reducer> reducer() default FirstOfReducer.class ;
}
